package etxt2db.query;

import java.util.ArrayList;
import java.util.List;

import etxt2db.api.ClassificationModel;
import etxt2db.api.ClassificationModelCreator;
import etxt2db.features.CharacterFeatureClassifier;

public class QueryInformationObject {
	private int action = Etxt2DBGrammarParser.NOTHING;
	public int getAction() {
		return action;
	}
	public void setAction(int action) {
		this.action = action;
	}
	public ClassificationModel getTrainingResult() {
		return trainingResult;
	}
	public void setTrainingResult(ClassificationModel trainingResult) {
		this.trainingResult = trainingResult;
	}
	public List<String> getTypesList() {
		return typesList;
	}
	public void setTypesList(List<String> typesList) {
		this.typesList = typesList;
	}
	public void addType(String type) {
		this.typesList.add(type);
	}
	public String getAnnotatorName() {
		return annotatorName;
	}
	public void setAnnotatorName(String annotatorName) {
		this.annotatorName = annotatorName;
	}
	public String getTestingFile() {
		return testingFile;
	}
	public void setTestingFile(String testingFile) {
		this.testingFile = testingFile;
	}
	public ClassificationModelCreator.MLTechnique getMachineLearningTechnique() {
		return machineLearningTechnique;
	}
	public void setMachineLearningTechnique(
			ClassificationModelCreator.MLTechnique machineLearningTechnique) {
		this.machineLearningTechnique = machineLearningTechnique;
	}
	public List<CharacterFeatureClassifier> getFeaturesList() {
		return featuresList;
	}
	public void setFeaturesList(List<CharacterFeatureClassifier> featuresList) {
		this.featuresList = featuresList;
	}
	public void addFeature(CharacterFeatureClassifier feature) {
		this.featuresList.add(feature);
	}
	public int getFeaturesWindow() {
		return featuresWindow;
	}
	public void setFeaturesWindow(int featuresWindow) {
		this.featuresWindow = featuresWindow;
	}
	
	public int getLine() {
		return line;
	}
	public void setLine(int line) {
		this.line = line;
	}
	public int getCharPositionInLine() {
		return charPositionInLine;
	}
	public void setCharPositionInLine(int charPositionInLine) {
		this.charPositionInLine = charPositionInLine;
	}
	public int getTechniqueUsed() {
		return techniqueUsed;
	}
	public void setTechniqueUsed(int techniqueUsed) {
		this.techniqueUsed = techniqueUsed;
	}
	public String getRegularExpression() {
		return regularExpression;
	}
	public void setRegularExpression(String regularExpression) {
		this.regularExpression = regularExpression;
	}
	public String getRegularExpressionType() {
		return regularExpressionType;
	}
	public void setRegularExpressionType(String regularExpressionType) {
		this.regularExpressionType = regularExpressionType;
	}
	public String getDictionaryPath() {
		return dictionaryPath;
	}
	public void setDictionaryPath(String dictionaryPath) {
		this.dictionaryPath = dictionaryPath;
	}
	public boolean isDictionaryCase() {
		return dictionaryCase;
	}
	public void setDictionaryCase(boolean dictionaryCase) {
		this.dictionaryCase = dictionaryCase;
	}
	public String getMachineLearningTrainingPath() {
		return machineLearningTrainingPath;
	}
	public void setMachineLearningTrainingPath(String machineLearningTrainingPath) {
		this.machineLearningTrainingPath = machineLearningTrainingPath;
	}
	public String getBeginTag() {
		return beginTag;
	}
	public void setBeginTag(String beginTag) {
		this.beginTag = beginTag;
	}
	public String getEndTag() {
		return endTag;
	}
	public void setEndTag(String endTag) {
		this.endTag = endTag;
	}
	public boolean isDocPerFile() {
		return docPerFile;
	}
	public void setDocPerFile(boolean docPerFile) {
		this.docPerFile = docPerFile;
	}
	public void setAnnotators(List<String> annotators) {
		this.annotators = annotators;
	}
	public List<String> getAnnotators() {
		return annotators;
	}
	public void addAnnotator(String ann){
		annotators.add(ann);
	}
	private ClassificationModel trainingResult;
	private List<String> typesList = new ArrayList<String>();
	private String annotatorName;
	private String testingFile;
	private ClassificationModelCreator.MLTechnique machineLearningTechnique;
	private List<CharacterFeatureClassifier> featuresList = null;
	private int featuresWindow = 3;
    private int line;
    private int charPositionInLine=0;
    private int techniqueUsed = Etxt2DBGrammarParser.NOTECH;
    private String regularExpression;
    private String regularExpressionType;
    private String dictionaryPath;
    private boolean dictionaryCase = true;
    private String machineLearningTrainingPath;
    private String beginTag;
    private String endTag;
    private boolean docPerFile;
    private List<String> annotators = new ArrayList<String>();
}
